package interfaces;

import java.awt.Color;

import javax.swing.ImageIcon;

/** 
 * The visualizer interface - displays the board
 */
public interface Visualizer {
	/**
	 * Sets an association between state and a given visual object
	 *
	 *
	 * @param state - State of the cell
	 * @param icon - custom visual object to be used for painting the cell
	 */
	 void setStateIcon(State state, ImageIcon icon);

	/**
	 * Sets an association between state and a given visual object
	 *
	 *
	 * @param state - State of the cell
	 * @param color - color used for painting the cell
	 */
	 void setStateColor(State state, Color color);

	 
	 /**
	 * Displays a cellular automaton on a User Interface, cell by cell
	 *
	 * @param state - state of the cell at row i, column j
	 * @param i - cell row
	 * @param j - cell column
	 */
	 void paint(State state, int i, int j);
}
